ડેટા વિશ્લેષણ માટે Pandas GroupBy ની શક્તિને અનલૉક કરો. આ માર્ગદર્શિકા આંતરરાષ્ટ્રીય ડેટા માટે વ્યવહારુ ઉદાહરણો સાથે aggregation અને transformation તકનીકોની શોધ કરે છે.
Pandas GroupBy ઓપરેશન્સમાં નિપુણતા: Aggregation vs. Transformation
Pandas, Python માં ડેટા મેનિપ્યુલેશનનો આધારસ્તંભ, ડેટાને વિશ્લેષણ અને સમજવા માટે એક શક્તિશાળી સાધન પ્રદાન કરે છે: GroupBy ઓપરેશન. આ સુવિધા તમને સામાન્ય લાક્ષણિકતાઓ પર આધારિત જૂથોમાં તમારા ડેટાને વિભાજીત કરવાની અને પછી આ જૂથો પર કાર્યો લાગુ કરવાની મંજૂરી આપે છે, જે છુપાયેલી આંતરદૃષ્ટિને જાહેર કરે છે. આ લેખ બે મુખ્ય GroupBy ઓપરેશન્સ: aggregation અને transformation માં ઊંડાણપૂર્વક જાય છે, જે વિશ્વભરના ડેટા પ્રોફેશનલ્સ માટે વ્યવહારુ ઉદાહરણો અને સમજૂતીઓ પ્રદાન કરે છે.
GroupBy કન્સેપ્ટ સમજવો
તેના મૂળમાં, GroupBy એ એક પ્રક્રિયા છે જેમાં ત્રણ મુખ્ય પગલાં શામેલ છે: એક અથવા વધુ માપદંડના આધારે ડેટાને જૂથોમાં વિભાજીત કરવો, દરેક જૂથ પર સ્વતંત્ર રીતે કાર્ય લાગુ કરવું, અને પરિણામોને નવા ડેટા સ્ટ્રક્ચરમાં જોડવું. આ "split-apply-combine" વ્યૂહરચના ડેટા વિશ્લેષણમાં એક મૂળભૂત ખ્યાલ છે અને જટિલ ડેટાસેટ્સનું અન્વેષણ કરવા માટે એક સુગમ માળખું પ્રદાન કરે છે.
GroupBy ની શક્તિ વિવિધ ડેટા પ્રકારો અને સ્ટ્રક્ચર્સને સંભાળવાની તેની ક્ષમતામાં રહેલી છે, જે તેને વિવિધ ક્ષેત્રોમાં લાગુ પડે છે. ભલે તમે બહુવિધ પ્રદેશોમાંથી વેચાણ ડેટા, વિવિધ ઉપકરણોમાંથી સેન્સર રીડિંગ્સ, અથવા વસ્તી વિષયક ડેટામાં સોશિયલ મીડિયા પ્રવૃત્તિનું વિશ્લેષણ કરી રહ્યાં હોવ, GroupBy તમને અર્થપૂર્ણ આંતરદૃષ્ટિ મેળવવામાં મદદ કરી શકે છે.
Aggregation: જૂથોમાં ડેટાનો સારાંશ
Aggregation એ દરેક જૂથ માટે સારાંશ આંકડાઓની ગણતરી કરવાની પ્રક્રિયા છે. આ આંકડા જૂથની લાક્ષણિકતાઓનો સંક્ષિપ્ત અવલોકન પ્રદાન કરે છે, જે તમને તમારા ડેટાના વિવિધ વિભાગોની તુલના અને વિરોધાભાસ કરવાની મંજૂરી આપે છે. સામાન્ય aggregation કાર્યોમાં શામેલ છે:
sum(): દરેક જૂથમાં મૂલ્યોનો સરવાળો ગણે છે.mean(): દરેક જૂથમાં સરેરાશ મૂલ્ય ગણે છે.median(): દરેક જૂથમાં મધ્ય મૂલ્ય ગણે છે.min(): દરેક જૂથમાં ન્યૂનતમ મૂલ્ય શોધે છે.max(): દરેક જૂથમાં મહત્તમ મૂલ્ય શોધે છે.count(): દરેક જૂથમાં બિન-શૂન્ય મૂલ્યોની સંખ્યા ગણે છે.size(): દરેક જૂથનું કદ (શૂન્ય સહિત) પરત કરે છે.std(): દરેક જૂથમાં પ્રમાણભૂત વિચલન ગણે છે.var(): દરેક જૂથમાં વિચલન ગણે છે.
Aggregation ના વ્યવહારુ ઉદાહરણો
ચાલો એક કાલ્પનિક ઈ-કોમર્સ કંપની માટે આંતરરાષ્ટ્રીય વેચાણ ડેટાના ડેટાસેટ પર વિચાર કરીએ. ડેટામાં ઉત્પાદન શ્રેણી, વેચાણનો દેશ અને વેચાણ રકમ વિશેની માહિતી શામેલ છે.
import pandas as pd
# Sample data
data = {
'Category': ['Electronics', 'Clothing', 'Electronics', 'Clothing', 'Home Goods', 'Electronics', 'Clothing', 'Home Goods'],
'Country': ['USA', 'UK', 'Canada', 'USA', 'Germany', 'UK', 'Canada', 'Germany'],
'Sales': [100, 50, 75, 60, 80, 90, 45, 70]
}
df = pd.DataFrame(data)
print(df)
આ આઉટપુટ કરશે:
Category Country Sales
0 Electronics USA 100
1 Clothing UK 50
2 Electronics Canada 75
3 Clothing USA 60
4 Home Goods Germany 80
5 Electronics UK 90
6 Clothing Canada 45
7 Home Goods Germany 70
ઉદાહરણ 1: દરેક શ્રેણી દીઠ કુલ વેચાણની ગણતરી
દરેક ઉત્પાદન શ્રેણી માટે કુલ વેચાણની ગણતરી કરવા માટે, અમે groupby() પદ્ધતિ અને પછી sum() aggregation ફંક્શનનો ઉપયોગ કરી શકીએ છીએ.
category_sales = df.groupby('Category')['Sales'].sum()
print(category_sales)
આ આઉટપુટ કરશે:
Category
Clothing 155
Electronics 265
Home Goods 150
Name: Sales, dtype: int64
ઉદાહરણ 2: દરેક દેશ દીઠ સરેરાશ વેચાણની ગણતરી
તેવી જ રીતે, દરેક દેશ દીઠ સરેરાશ વેચાણની ગણતરી કરવા માટે, અમે mean() aggregation ફંક્શનનો ઉપયોગ કરી શકીએ છીએ.
country_sales = df.groupby('Country')['Sales'].mean()
print(country_sales)
આ આઉટપુટ કરશે:
Country
Canada 60.0
Germany 75.0
UK 70.0
USA 80.0
Name: Sales, dtype: float64
ઉદાહરણ 3: બહુવિધ aggregation કાર્યોનો ઉપયોગ
Pandas તમને agg() પદ્ધતિનો ઉપયોગ કરીને એકસાથે બહુવિધ aggregation કાર્યો લાગુ કરવાની મંજૂરી આપે છે. આ જૂથની લાક્ષણિકતાઓનો એક વ્યાપક સારાંશ પ્રદાન કરે છે.
category_summary = df.groupby('Category')['Sales'].agg(['sum', 'mean', 'median', 'count'])
print(category_summary)
આ આઉટપુટ કરશે:
sum mean median count
Category
Clothing 155 51.666667 50.0 3
Electronics 265 88.333333 90.0 3
Home Goods 150 75.000000 75.0 2
ઉદાહરણ 4: કસ્ટમ aggregation કાર્યો
તમે lambda expressions અથવા named functions નો ઉપયોગ કરીને તમારા પોતાના કસ્ટમ aggregation કાર્યો પણ વ્યાખ્યાયિત કરી શકો છો. આ તમને ચોક્કસ આંકડાઓની ગણતરી કરવાની મંજૂરી આપે છે જે standard aggregation કાર્યોમાં ઉપલબ્ધ નથી.
# Custom function to calculate the range (max - min)
def custom_range(x):
return x.max() - x.min()
category_summary = df.groupby('Category')['Sales'].agg(['sum', 'mean', custom_range])
print(category_summary)
આ આઉટપુટ કરશે:
sum mean custom_range
Category
Clothing 155 51.666667 15
Electronics 265 88.333333 25
Home Goods 150 75.000000 10
Transformation: જૂથોમાં ડેટાને સંશોધિત કરવો
Transformation, બીજી તરફ, કેટલાક ગણતરીઓના આધારે દરેક જૂથમાં ડેટાને સંશોધિત કરવાનો સમાવેશ કરે છે. Aggregation થી વિપરીત, જે દરેક જૂથ માટે સારાંશ મૂલ્ય પરત કરે છે, transformation મૂળ ડેટામાં દરેક પંક્તિ માટે મૂલ્ય પરત કરે છે, પરંતુ મૂલ્ય એ પંક્તિ સંબંધિત જૂથના આધારે ગણવામાં આવે છે. Transformation ઓપરેશન્સ DataFrame ના મૂળ index અને આકારને જાળવી રાખે છે.
Transformation માટે સામાન્ય ઉપયોગના કેસોમાં શામેલ છે:
- દરેક જૂથમાં ડેટાને પ્રમાણિત કરવો.
- દરેક જૂથમાં રેન્ક અથવા પર્સેન્ટાઇલની ગણતરી કરવી.
- જૂથ આંકડાઓના આધારે ખૂટતા મૂલ્યો ભરવા.
Transformation ના વ્યવહારુ ઉદાહરણો
ચાલો અમારા આંતરરાષ્ટ્રીય વેચાણ ડેટા સાથે ચાલુ રાખીએ. અમે દરેક દેશમાં વેચાણ આંકડા સંબંધિત ગણતરીઓ કરવા માટે transformation લાગુ કરી શકીએ છીએ.
ઉદાહરણ 1: દરેક દેશમાં વેચાણ ડેટાને પ્રમાણિત કરવો (Z-score)
ડેટાને પ્રમાણિત કરવો એટલે મૂલ્યોને 0 ના સરેરાશ અને 1 ના પ્રમાણભૂત વિચલન સાથે રૂપાંતરિત કરવું. આ વિવિધ સ્કેલ અને વિતરણોમાં ડેટાની તુલના કરવા માટે ઉપયોગી છે. અમે આ પ્રાપ્ત કરવા માટે transform() પદ્ધતિ અને lambda expression નો ઉપયોગ કરી શકીએ છીએ.
from scipy.stats import zscore
df['Sales_Zscore'] = df.groupby('Country')['Sales'].transform(zscore)
print(df)
આ આઉટપુટ કરશે:
Category Country Sales Sales_Zscore
0 Electronics USA 100 1.000000
1 Clothing UK 50 -1.000000
2 Electronics Canada 75 1.000000
3 Clothing USA 60 -1.000000
4 Home Goods Germany 80 1.000000
5 Electronics UK 90 1.000000
6 Clothing Canada 45 -1.000000
7 Home Goods Germany 70 -1.000000
Sales_Zscore કૉલમ હવે દરેક દેશ માટે પ્રમાણિત વેચાણ મૂલ્યો ધરાવે છે. 0 થી ઉપરના મૂલ્યો તે દેશ માટે સરેરાશ વેચાણથી ઉપર છે, અને 0 થી નીચેના મૂલ્યો સરેરાશથી નીચે છે.
ઉદાહરણ 2: દરેક શ્રેણીમાં વેચાણ રેન્કની ગણતરી
દરેક શ્રેણીમાં દરેક વેચાણનો રેન્ક ગણવા માટે, અમે transform() ફંક્શનમાં rank() પદ્ધતિનો ઉપયોગ કરી શકીએ છીએ.
df['Sales_Rank'] = df.groupby('Category')['Sales'].transform(lambda x: x.rank(method='dense'))
print(df)
આ આઉટપુટ કરશે:
Category Country Sales Sales_Zscore Sales_Rank
0 Electronics USA 100 1.000000 3.0
1 Clothing UK 50 -1.000000 2.0
2 Electronics Canada 75 1.000000 1.0
3 Clothing USA 60 -1.000000 3.0
4 Home Goods Germany 80 1.000000 2.0
5 Electronics UK 90 1.000000 2.0
6 Clothing Canada 45 -1.000000 1.0
7 Home Goods Germany 70 -1.000000 1.0
Sales_Rank કૉલમ તેની સંબંધિત શ્રેણીમાં દરેક વેચાણનો રેન્ક દર્શાવે છે. `method='dense'` આર્ગ્યુમેન્ટ ખાતરી કરે છે કે consecutive ranks gap વિના સોંપેલ છે.
ઉદાહરણ 3: જૂથ સરેરાશના આધારે ખૂટતા મૂલ્યો ભરવા
ચાલો વેચાણ ડેટામાં કેટલાક ખૂટતા મૂલ્યો દાખલ કરીએ અને પછી તેમને દરેક દેશ માટે સરેરાશ વેચાણના આધારે ભરીએ.
import numpy as np
# Introduce missing values
df.loc[[0, 3], 'Sales'] = np.nan
print(df)
# Fill missing values based on country mean
df['Sales_Filled'] = df['Sales'].fillna(df.groupby('Country')['Sales'].transform('mean'))
print(df)
ખૂટતા મૂલ્યો સાથેનું પ્રારંભિક DataFrame આ પ્રમાણે દેખાશે:
Category Country Sales Sales_Zscore Sales_Rank
0 Electronics USA NaN 1.000000 3.0
1 Clothing UK 50 -1.000000 2.0
2 Electronics Canada 75 1.000000 1.0
3 Clothing USA NaN -1.000000 3.0
4 Home Goods Germany 80 1.000000 2.0
5 Electronics UK 90 1.000000 2.0
6 Clothing Canada 45 -1.000000 1.0
7 Home Goods Germany 70 -1.000000 1.0
અને ખૂટતા મૂલ્યો ભર્યા પછી:
Category Country Sales Sales_Zscore Sales_Rank Sales_Filled
0 Electronics USA NaN 1.000000 3.0 NaN
1 Clothing UK 50 -1.000000 2.0 50.0
2 Electronics Canada 75 1.000000 1.0 75.0
3 Clothing USA NaN -1.000000 3.0 NaN
4 Home Goods Germany 80 1.000000 2.0 80.0
5 Electronics UK 90 1.000000 2.0 90.0
6 Clothing Canada 45 -1.000000 1.0 45.0
7 Home Goods Germany 70 -1.000000 1.0 70.0
મહત્વપૂર્ણ નોંધ: કારણ કે USA માટે કોઈ અસ્તિત્વમાં નથી તેવી સરેરાશ, પરિણામી Sales_Filled માં મૂલ્યો NaN છે. આવા ધાર કિસ્સાઓને હેન્ડલ કરવું વિશ્વસનીય ડેટા વિશ્લેષણ માટે નિર્ણાયક છે અને અમલીકરણ દરમિયાન ધ્યાનમાં લેવું જોઈએ.
Aggregation vs. Transformation: મુખ્ય તફાવતો
જ્યારે aggregation અને transformation બંને શક્તિશાળી GroupBy ઓપરેશન્સ છે, તેઓ અલગ-અલગ હેતુઓ પૂરા પાડે છે અને તેમની અલગ લાક્ષણિકતાઓ છે:
- Output Shape: Aggregation ડેટાનું કદ ઘટાડે છે, દરેક જૂથ માટે એક મૂલ્ય પરત કરે છે. Transformation મૂળ ડેટા કદ જાળવી રાખે છે, દરેક પંક્તિ માટે રૂપાંતરિત મૂલ્ય પરત કરે છે.
- Purpose: Aggregation નો ઉપયોગ ડેટાનો સારાંશ આપવા અને જૂથ લાક્ષણિકતાઓ પર આંતરદૃષ્ટિ મેળવવા માટે થાય છે. Transformation નો ઉપયોગ જૂથોમાં ડેટાને સંશોધિત કરવા માટે થાય છે, ઘણીવાર standardization અથવા normalization માટે.
- Return Value: Aggregation aggregated મૂલ્યો સાથે નવું DataFrame અથવા Series પરત કરે છે. Transformation રૂપાંતરિત મૂલ્યો સાથે Series પરત કરે છે, જે પછી મૂળ DataFrame માં નવા કૉલમ તરીકે ઉમેરી શકાય છે.
Aggregation અને transformation વચ્ચેની પસંદગી તમારા વિશિષ્ટ વિશ્લેષણાત્મક લક્ષ્યો પર આધાર રાખે છે. જો તમારે ડેટાનો સારાંશ આપવાની અને જૂથોની તુલના કરવાની જરૂર હોય, તો aggregation યોગ્ય પસંદગી છે. જો તમારે મૂળ ડેટા માળખું જાળવી રાખીને જૂથોમાં ડેટાને સંશોધિત કરવાની જરૂર હોય, તો transformation વધુ સારો વિકલ્પ છે.
Advanced GroupBy Techniques
મૂળભૂત aggregation અને transformation થી આગળ, Pandas GroupBy વધુ જટિલ ડેટા વિશ્લેષણ માટે અદ્યતન તકનીકોની શ્રેણી પ્રદાન કરે છે.
apply() સાથે કસ્ટમ કાર્યો લાગુ કરવા
apply() પદ્ધતિ સૌથી વધુ સુગમતા પ્રદાન કરે છે, જે તમને કોઈપણ કસ્ટમ કાર્યને દરેક જૂથ પર લાગુ કરવાની મંજૂરી આપે છે. આ કાર્ય aggregation, transformation, અથવા વધુ જટિલ ગણતરીઓ સહિત કોઈપણ ઓપરેશન કરી શકે છે.
def custom_function(group):
# Calculate the sum of sales for each category in a group, only if there is more than one row in the group
if len(group) > 1:
group['Sales_Sum'] = group['Sales'].sum()
else:
group['Sales_Sum'] = 0 # Or some other default value
return group
df_applied = df.groupby('Country').apply(custom_function)
print(df_applied)
આ ઉદાહરણમાં, અમે એક કસ્ટમ કાર્ય વ્યાખ્યાયિત કરીએ છીએ જે દરેક જૂથ (દેશ) માં વેચાણનો સરવાળો ગણે છે. apply() પદ્ધતિ આ કાર્યને દરેક જૂથ પર લાગુ કરે છે, જે તે જૂથ માટે વેચાણનો સરવાળો ધરાવતો નવો કૉલમ પરિણમે છે.
મહત્વપૂર્ણ નોંધ: apply કાર્ય અન્ય પદ્ધતિઓ કરતાં વધુ computationally intensive હોઈ શકે છે. મોટા ડેટાસેટ્સ સાથે કામ કરતી વખતે તમારા કોડને ઓપ્ટિમાઇઝ કરો અને વૈકલ્પિક અમલીકરણો ધ્યાનમાં લો.
બહુવિધ કૉલમ દ્વારા ગ્રુપિંગ
તમે વધુ granular segments બનાવવા માટે બહુવિધ કૉલમ દ્વારા તમારા ડેટાને ગ્રુપ કરી શકો છો. આ તમને બહુવિધ લાક્ષણિકતાઓના intersection ના આધારે ડેટાનું વિશ્લેષણ કરવાની મંજૂરી આપે છે.
category_country_sales = df.groupby(['Category', 'Country'])['Sales'].sum()
print(category_country_sales)
આ Category અને Country બંને દ્વારા ડેટાને ગ્રુપ કરશે, જે તમને દરેક દેશમાં દરેક શ્રેણી માટે કુલ વેચાણની ગણતરી કરવાની મંજૂરી આપશે. આ પ્રદેશો અને ઉત્પાદન લાઈનોમાં વેચાણ પ્રદર્શનનું વધુ વિગતવાર દૃશ્ય પ્રદાન કરે છે.
જૂથો દ્વારા પુનરાવર્તન
વધુ જટિલ વિશ્લેષણ માટે, તમે for loop નો ઉપયોગ કરીને જૂથો દ્વારા પુનરાવર્તન કરી શકો છો. આ તમને દરેક જૂથને વ્યક્તિગત રીતે access કરવાની અને તેના પર કસ્ટમ ઓપરેશન્સ કરવાની મંજૂરી આપે છે.
for name, group in df.groupby('Category'):
print(f"Category: {name}")
print(group)
આ દરેક ઉત્પાદન શ્રેણીમાંથી પસાર થશે અને સંબંધિત ડેટા છાપશે. દરેક શ્રેણી માટે કસ્ટમ વિશ્લેષણ અથવા અહેવાલો જનરેટ કરવા માટે આ ઉપયોગી થઈ શકે છે.
GroupBy નો ઉપયોગ કરવા માટેની શ્રેષ્ઠ પદ્ધતિઓ
GroupBy નો કાર્યક્ષમ અને અસરકારક ઉપયોગ સુનિશ્ચિત કરવા માટે, નીચેની શ્રેષ્ઠ પદ્ધતિઓ ધ્યાનમાં લો:
- તમારા ડેટાને સમજો:
GroupByલાગુ કરતાં પહેલાં, તમારા ડેટાને સમજવા અને સંબંધિત ગ્રુપિંગ માપદંડ અને aggregation/transformation કાર્યો ઓળખવા માટે સમય કાઢો. - યોગ્ય ઓપરેશન પસંદ કરો: તમારા વિશ્લેષણાત્મક લક્ષ્યો માટે aggregation અથવા transformation યોગ્ય પસંદગી છે કે કેમ તે કાળજીપૂર્વક ધ્યાનમાં લો.
- પ્રદર્શન માટે ઓપ્ટિમાઇઝ કરો: મોટા ડેટાસેટ્સ માટે, vectorized ઓપરેશન્સનો ઉપયોગ કરીને અને બિનજરૂરી loops ટાળીને તમારા કોડને ઓપ્ટિમાઇઝ કરવાનું વિચારો.
- ખૂટતા મૂલ્યોને હેન્ડલ કરો: તમારા ડેટામાં ખૂટતા મૂલ્યોથી વાકેફ રહો અને
fillna()અથવાdropna()જેવી પદ્ધતિઓનો ઉપયોગ કરીને તેમને યોગ્ય રીતે હેન્ડલ કરો. - તમારા કોડનું દસ્તાવેજીકરણ કરો: દરેક
GroupByઓપરેશનના હેતુ અને તમારી પસંદગીઓ પાછળના કારણોને સમજાવવા માટે તમારા કોડને સ્પષ્ટપણે દસ્તાવેજીકરણ કરો.
નિષ્કર્ષ
Pandas GroupBy ડેટા વિશ્લેષણ માટે એક શક્તિશાળી સાધન છે, જે તમને તમારા ડેટાને વિભાજીત કરવા, દરેક જૂથ પર કાર્યો લાગુ કરવા અને મૂલ્યવાન આંતરદૃષ્ટિ મેળવવા સક્ષમ બનાવે છે. Aggregation અને transformation તકનીકોમાં નિપુણતા મેળવીને, તમે તમારા ડેટાની સંપૂર્ણ સંભવિતતાને અનલૉક કરી શકો છો અને અંતર્ગત પેટર્ન અને વલણોની ઊંડી સમજ મેળવી શકો છો. ભલે તમે વેચાણ ડેટા, સેન્સર રીડિંગ્સ, અથવા સોશિયલ મીડિયા પ્રવૃત્તિનું વિશ્લેષણ કરી રહ્યાં હોવ, GroupBy તમને ડેટા-આધારિત નિર્ણયો લેવામાં અને તમારા વિશ્લેષણાત્મક લક્ષ્યોને પ્રાપ્ત કરવામાં મદદ કરી શકે છે. GroupBy ની શક્તિને અપનાવો અને તમારા ડેટા વિશ્લેષણ કૌશલ્યોને આગલા સ્તર પર લઈ જાઓ.
આ માર્ગદર્શિકાએ Pandas GroupBy ઓપરેશન્સનો વ્યાપક અવલોકન પ્રદાન કર્યો છે જેમાં Aggregation vs Transformation પર ધ્યાન કેન્દ્રિત કર્યું છે. આ તકનીકોનો આંતરરાષ્ટ્રીય ડેટા પર ઉપયોગ કરીને, વિશ્વભરના ડેટા વૈજ્ઞાનિકો વિવિધ ડેટાસેટ્સમાં નિર્ણાયક વ્યવસાયિક આંતરદૃષ્ટિ મેળવી શકે છે. પ્રેક્ટિસ કરો, પ્રયોગ કરો, અને Pandas ની સંપૂર્ણ સંભવિતતાનો લાભ લેવા માટે તમારી વિશિષ્ટ જરૂરિયાતોને અનુરૂપ આ તકનીકોને અનુરૂપ બનાવો.